/*
 * Copyright 2009 Tran Nhut Trung.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.gdevelop.gwtxp.rebind.gwt;


import com.gdevelop.gwtxp.rebind.AbstractTag;
import com.gdevelop.gwtxp.rebind.Tag;
import com.gdevelop.gwtxp.rebind.el.ELParser;
import com.gdevelop.gwtxp.rebind.el.Node;

import com.google.gwt.core.ext.typeinfo.NotFoundException;
import com.google.gwt.user.client.ui.DisclosurePanel;

import org.w3c.dom.Attr;


public class DisclosurePanelTag extends AbstractTag{
  public DisclosurePanelTag() {
  }

  public Class getUIClass() {
    return DisclosurePanel.class;
  }

  public void generateDeclaration() throws NotFoundException {
    String headerText = this.getAttribute("headerText");

    String className = this.getUIClass().getSimpleName();
    out.print(className + " " + varName + " = new " + className+ "(");
    if (headerText != null){
      Node elNode = ELParser.parse(headerText);
      out.print(elNode.generateGetExpressionWithConversion(elContext, TYPE_String));
    }
    out.println(");");
  }

  public void generateAddUI(Tag child) {
    out.println(varName + ".add(" + child.getVarName() + ");");
  }

  protected void generateSetAttributeByExpression(Attr attr) throws NotFoundException {
    if (!"headerText".equals(attr.getLocalName())){
      super.generateSetAttributeByExpression(attr);
    }
  }
}
